package tests;


import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import business.Aluno;
import business.Curso;
import business.Disciplina;
import business.Inicial;
import business.Matricula;
import business.Oferta;
import business.Perfil;

public class PerfilTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
		Inicial.reset();
	}

	@Before
	public void setUp() throws Exception {
		
	}

	@After
	public void tearDown() throws Exception {
	}
	

	@Test
	public void matriculasTest(){
		Perfil p = new Perfil();
		Matricula m1 = new Matricula();
		Matricula m2 = new Matricula();
		m1.setPerfil(p);
		p.matriculas();
		
	}
	
	@Test
	public void efectuaMatriculaTest(){
		new Perfil().efectuaMatricula(new Aluno());
	}
	
	@Test
	public void alunosTest(){
		Perfil p = new Perfil();
		Matricula m = new Matricula();
		Aluno a = new Aluno();
		m.setAluno(a);
		m.setPerfil(p);
		
		p.alunos();
		
	}
	
	@Test
	public void ofertaTest(){
		Perfil p = new Perfil();
		Oferta o1 = new Oferta();
		Oferta o2 = new Oferta();
		o1.setPerfil(p);
		p.ofertas();
	}
	
	@Test
	public void disciplinasTest(){
		Perfil p = new Perfil();
		Oferta o = new Oferta();
		Disciplina d = new Disciplina();
		o.setDisciplina(d);
		o.setPerfil(p);
		
		p.disciplinas();
	}
	
	@Test
	public void getterTest(){
		new Perfil().getEcts();
		new Perfil().getNome();
		new Perfil().getClass();
		new Perfil().getCurso();
	}
	
	@Test
	public void validConstruct(){
		Perfil p = new Perfil("perfil", 55, new Curso());
	}
	
	@Test (expected=AssertionError.class)
	public void invalidConstruct(){
		Perfil p = new Perfil(null, -1, null);
	}
	
	@Test
	public void validSetNome(){
		Perfil p = new Perfil();
		p.setNome("perfil");
	}
	
	@Test (expected=AssertionError.class)
	public void invalidSetNome(){
		Perfil p = new Perfil();
		p.setNome(null);
	}
	
	@Test
	public void validSetECTS(){
		Perfil p = new Perfil();
		p.setEcts(55);
	}

	@Test (expected=AssertionError.class)
	public void invalidSetECTS(){
		Perfil p = new Perfil();
		p.setEcts(-1);
	}
	
	@Test 
	public void validSetCurso(){
		Perfil p = new Perfil();
		p.setCurso(new Curso());
	}
	
	@Test (expected=AssertionError.class)
	public void invalidSetCurso(){
		Perfil p = new Perfil();
		p.setCurso(null);
	}
}
